#include <iostream>
#include <stack>
using namespace std;
#define MAX_N 10000

int match[MAX_N + 5] = {0};

int main() {
    char str[MAX_N + 5];
    cin >> (str + 1);
    stack<int> ss;
    for (int i = 1; str[i]; i++) {
        switch (str[i]) {
            case '(':
            case '[':
            case '{':
                ss.push(i);
                break;
            case ')':{
                if (!ss.empty() && str[ss.top()] == '(') {
                    match[ss.top()] = i;
                    ss.pop();
                } else {
                    ss.push(i);
                }
            } break;
            case ']':{
                if (!ss.empty() && str[ss.top()] == '[') {
                    match[ss.top()] = i;
                    ss.pop();
                } else {
                    ss.push(i);
                }
            } break;
            case '}': {
                if (!ss.empty() && str[ss.top()] == '{') {
                    match[ss.top()] = i;
                    ss.pop();
                } else {
                    ss.push(i);
                }
            } break;
        }
    }
    // 调试
    // for (int i = 1; str[i]; i++) {
    //     printf("match[%d] = %d\n", i, match[i]);
    // }
    int ans = 0, ans_tmp = 0, x = 1;
    while(str[x]) {
        if(match[x]) {
            ans_tmp += (match[x] - x + 1);
            x = match[x] + 1;
        }
        else {
            x += 1;
            ans_tmp = 0;
        }
        if(ans_tmp > ans) ans = ans_tmp;
    }
    cout << ans << endl;
    return 0;
}